package com.linkelee.api.enums;

/**
 * 用于记录消息类型
 * @author lsl
 * @since 2019-04-11
 */
public enum  MessageStatusEnum {


    //准备中,主事务发起,且主事务未提交,则状态应该为:PREPARING
    PREPARING("预发起",0),

    //TODO 如果发送准备完毕消息失败,需要在本地处理。
    //两种方案可以做,第一种,不同的消息源,第二种,同一个redis,同一个梦想。
    //需要定时器,定时处理。

    //准备完毕,主事务提交,消息中心还未发送发送即忘消息之前,消息状态为:READY
    READY("准备完毕",1),
    //消息中心已经发送发送即忘消息,消息状态为:SENDSUCCESS
    SENDING("发送中",2),
    //消息中心发出发送即忘消息失败,消息状态为:SENDINGFAIL
    SENDINGFAIL("发送失败",3),
    //消费者接收到即忘消息,处理成功,消息状态为:RECEIVESUCCESS
    RECEIVESUCCESS("接收处理成功",4),

    //TODO 如果返回处理成功信息失败,需要在本地处理。
    //两种方案可以做,第一种,不同的消息源,第二种,同一个redis,同一个梦想。
    //需要定时器,定时处理。

    //消费者接收到即忘消息,处理失败,消息状态为:RECEIVEFAIL
    RECEIVEFAIL("接收处理失败",5);





    /**
     * 类型名称
     */
    private String typeName;
    /**
     * 类型顺序
     */
    private Integer typeOrder;


    MessageStatusEnum(String typeName, Integer typeOrder) {
        this.typeName = typeName;
        this.typeOrder = typeOrder;
    }}
